Many telecommunications services now use a variety of protocols (e.g., Session Initiation Protocol (SIP), HyperText Transport Protocol (HTTP), Real-time Transport Protocol (RTP), and so on) to build rich services in terms of “converged applications”. One example of a converged application is a web conference. The participants in the web conference may connect over the telephone to hear each other, but will also connect via the web to visualize who is attending the conference and view materials related to the conference or perform operations such as conference moderation, muting users, or removing users.
The clustering of these services into a host server environment introduces new challenges. Clustering is the concept of utilizing many host servers in a cluster to serve the requests of multiple users. When applications are hosted by a cluster, it is efficient to have the various sessions from each protocol utilized in the converged application hosted by the same node in the cluster. A specific challenge of clustering in the converged application context is how to handle the load balancing of HTTP requests when a converged application session has failed.
For example, assume a node in a cluster is serving converged application sessions of HTTP and SIP protocols and that this node fails for any variety of reasons. At this point, the sessions will get routed according to their separate protocols. Requests related to the session and directed to the cluster will be distributed by a load balancer assigned for the particular protocol. In out example, SIP requests will be directed through a SIP load balancer and HTTP requests will be directed through an HTTP load balancer. These load balancers do not communicate with each other. As a result, they will not take into consideration that the request may be part of a converged application, and will not look to direct a request to a node that is serving any related protocol sessions for the request. In other words, the protocol session will be failed-over independently to different cluster nodes. This is not an efficient result. Hosting related protocol sessions of a converged application on the same node is ideal as it saves valuable time and processing resources.